package com.tencent.common;

/**
 * User: rizenguo
 * Date: 2014/10/29
 * Time: 14:40
 * 这里放置各种配置数据
 */
public class Configure {

    private static ThreadLocal<CustomConfigure> myConfigure = ThreadLocal.withInitial(CustomConfigure::new);

    //sdk的版本号
    private static final String sdkVersion = null; /*= "java sdk 1.0.1";*/

//这个就是自己要保管好的私有Key了（切记只能放在自己的后台代码里，不能放在任何可能被看到源代码的客户端程序中）
    // 每次自己Post数据给API的时候都要用这个key来对所有字段进行签名，生成的签名会放在Sign这个字段，API收到Post数据的时候也会用同样的签名算法对Post过来的数据进行签名和验证
    // 收到API的返回的时候也要用这个key来对返回的数据算下签名，跟API的Sign数据进行比较，如果值不一致，有可能数据被第三方给篡改

    //private static String key = "";

    //以下是几个API的路径：
    //1）被扫支付API
    public static String PAY_API = "https://api.mch.weixin.qq.com/pay/micropay";

    //2）被扫支付查询API
    public static String PAY_QUERY_API = "https://api.mch.weixin.qq.com/pay/orderquery";

    //3）退款API
    public static String REFUND_API = "https://api.mch.weixin.qq.com/secapi/pay/refund";

    //4）退款查询API
    public static String REFUND_QUERY_API = "https://api.mch.weixin.qq.com/pay/refundquery";

    //5）撤销API
    public static String REVERSE_API = "https://api.mch.weixin.qq.com/secapi/pay/reverse";

    //6）下载对账单API
    public static String DOWNLOAD_BILL_API = "https://api.mch.weixin.qq.com/pay/downloadbill";

    //7) 统计上报API
    public static String REPORT_API = "https://api.mch.weixin.qq.com/payitil/report";


    public static String HttpsRequestClassName = "com.tencent.common.HttpsRequest";

    public static void setKey(String key) {
        myConfigure.get().setKey(key);
    }

    public static void setAppID(String appID) {
        myConfigure.get().setAppID(appID);
    }

    public static void setMchID(String mchID) {
        myConfigure.get().setMchID(mchID);
    }

    public static void setSubMchID(String subMchID) {
        myConfigure.get().setSubMchID(subMchID);
    }

    public static void setCertLocalPath(String certLocalPath) {
        myConfigure.get().setCertLocalPath(certLocalPath);
    }

    public static void setCertPassword(String certPassword) {
        myConfigure.get().setCertPassword(certPassword);
    }

    public static void setIp(String ip) {
        myConfigure.get().setIp(ip);
    }

    public static String getKey() {
        return myConfigure.get().getKey();
    }

    public static String getAppid() {
        return myConfigure.get().getAppID();
    }

    public static String getMchid() {
        return myConfigure.get().getMchID();
    }

    public static String getSubMchid() {
        return myConfigure.get().getSubMchID();
    }

    public static String getCertLocalPath() {
        return myConfigure.get().getCertLocalPath();
    }

    public static String getCertPassword() {
        return myConfigure.get().getCertPassword();
    }

    public static String getIP() {
        return myConfigure.get().getIp();
    }

    public static void setHttpsRequestClassName(String name) {
        HttpsRequestClassName = name;
    }

    public static String getSdkVersion() {
        return sdkVersion;
    }

    public static boolean isUseThreadToDoReport() {
        return true;
    }


    private static class CustomConfigure {
        private String key = "";

        //微信分配的公众号ID（开通公众号之后可以获取到）
        private String appID = "";

        //微信支付分配的商户号ID（开通公众号的微信支付功能之后可以获取到）
        private String mchID = "";

        //受理模式下给子商户分配的子商户号
        private String subMchID = "";

        //HTTPS证书的本地路径
        private String certLocalPath = "";

        //HTTPS证书密码，默认密码等于商户号MCHID
        private String certPassword = "";

        //机器IP
        private String ip = "";

        String getKey() {
            return key;
        }

        void setKey(String key) {
            this.key = key;
        }

        String getAppID() {
            return appID;
        }

        void setAppID(String appID) {
            this.appID = appID;
        }

        String getMchID() {
            return mchID;
        }

        void setMchID(String mchID) {
            this.mchID = mchID;
        }

        String getSubMchID() {
            return subMchID;
        }

        void setSubMchID(String subMchID) {
            this.subMchID = subMchID;
        }

        String getCertLocalPath() {
            return certLocalPath;
        }

        void setCertLocalPath(String certLocalPath) {
            this.certLocalPath = certLocalPath;
        }

        String getCertPassword() {
            return certPassword;
        }

        void setCertPassword(String certPassword) {
            this.certPassword = certPassword;
        }

        String getIp() {
            return ip;
        }

        void setIp(String ip) {
            this.ip = ip;
        }
    }

}
